import { createSlice, configureStore } from '@reduxjs/toolkit'

const goodsSlice = createSlice({
    name: 'goods',
    initialState: {
        // 商品列表数组
        goodsList: [
            {
                id: Math.random().toString(36).slice(2),
                gname: '小米13S',
                price: 5999
            }
        ]
    },
    reducers: {
        // 程序员：专门用来操作数据的
        // 此处的action是用actionCreator创建出来的 {type:'切片名/函数名', payload:数据}
        addGoods(state, action) {
            console.log('addGoods: ',state, action)
        }
    }
})

console.log('goodsSlice: ', goodsSlice)

const { addGoods } = goodsSlice.actions // addGoods身份是actionCreator执行的结果是创建一个action对象，参数是action对象中的 payload属性值

console.log('actionCreator addGoods: ', addGoods, addGoods({ gname: '华为手机', price: 7999 }))

/**
 * 创建store
 * 1. 使用 configureStore创建
 * 
 */

const store = configureStore({
    reducer: {
        goods: goodsSlice.reducer
    }
})

/**
 * 获取数据唯一正确的方式，就是store.getState()
 */
console.log('store: ', store, store.getState())

console.log('goodsList: ', store.getState().goods.goodsList)

/**
 * 改变仓库数据：  项目经理找产品经理提需求 ===> 程序员完成需求
 * 
 * store.dispatch(action对象)  此处的action对象是用 actionCreator创建的
 * dispatch的结果，会找到对应的
 */

store.dispatch(addGoods({gname:'华为手机', price:7000})) // ==> 找到对应切片的reducer方法，执行并将action对象传递过去。函数调用的参数，是action对象的payload属性值
